package br.ucb.ProjetoFinal.view;

import br.ucb.ProjetoFinal.bean.ApresentacaoPrefeitura;
import br.ucb.ProjetoFinal.domain.Prefeitura;
import br.ucb.ProjetoFinal.service.PrefeituraService;
import java.io.Serializable;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/*
 * Managed bean responsavel pelo caso de uso MANTER PREFEITURA
 */
@ManagedBean(name="managedPrefeitura")
@SessionScoped
public class ManagedPrefeitura implements Serializable{

//////////////////////////////////ATRIBUTOS/////////////////////////////////////
    @EJB
    private PrefeituraService service;
    //Usado tanto no cadastro quanto nas consultas, para armazenar o valor dos campos
    private ApresentacaoPrefeitura pref;
    //Esta LIST receberá os vários prefs cadastrados, na hora da pesquisa
    private List<Prefeitura> prefs;
    
    //Usado na CONSULTA
    private String numRadioPesquisa;

////////////////////////////////////////////////////////////////////////////////

    public ManagedPrefeitura() {
        //Seta o valor inicial para os radio-buttons na pagina da consulta
        setNumRadioPesquisa("cod");
        setPrefeitura(new ApresentacaoPrefeitura());
    }

    //METODO USADO PARA O CADASTRO DOS PREFEITURAS//////////////////////////
        public String submeter(){
            getPrefeitura().filtraMunicipio();
            //Chamada do método para cadastro --- CUIDADO! Quando cadastrar, tem que ver se a prefeitura foi informada (Vai vir como null ????)
            return "result"; // RESULT?
        }
    // FIM DO METODO////////////////////////////////////////////////////////////


    // METODO USADO PARA PESQUISA DE PREFEITURAS////////////////////////////
        public String procurar(){

            //setPrefeituras(escolhe.pesquisaPrefeitura(getNumRadioPesquisa(),getPrefeitura()));

            //Se o array estiver vazio, significa que não foram encontrados resultados
            if(getPrefeituras().isEmpty())
                return "semResults";
            else
                return "listPref";

        }
    // FIM DO METODO////////////////////////////////////////////////////////////
        
    // METODO USADO PARA PESQUISA DE PREFEITURAS////////////////////////////
        public String procurarTodos(){
            setPrefeituras(service.getPrefeituras());

            //Se o array estiver vazio, significa que não foram encontrados resultados
            if(getPrefeituras().isEmpty())
                return "semResults";
            else
                return "listPref";
        }
    // FIM DO METODO////////////////////////////////////////////////////////////


    // METODO USADO PARA DETALHAR UM PREFEITURA/////////////////////////////
       /* public String detalhar(){
            String index = (String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("index");
            setPrefeitura(getPrefeituras().get(Integer.parseInt(index)));

            return "result";
        }*/
    // FIM DO METODO////////////////////////////////////////////////////////////


    //FUNÇÕES USADAS PARA IR PARA A PAGINA DE CADASTRO, PARA A PAGINA DE BUSCA E VINCULAR DADOS RESPECTIVAMENTE
        public String cadastraPref(){
            setPrefeitura(new ApresentacaoPrefeitura());

            return "cadastraPref";
        }
        public String consultaPref(){
            setPrefeitura(new ApresentacaoPrefeitura());

            return "consultaPref";
        }
        public String vinculaDados(){

            return "vincula";
        }


    //FIM DAS FUNÇÕES///////////////////////////////////////////////////////////


//GETTERS & SETTERS/////////////////////////////////////////////////////////////
    public ApresentacaoPrefeitura getPrefeitura() {
        return pref;
    }

    public void setPrefeitura(ApresentacaoPrefeitura pref) {
        this.pref = pref;
    }

    public void setPrefeituras(List<Prefeitura> prefs) {
        this.prefs = prefs;
    }

    public List<Prefeitura> getPrefeituras() {
        return prefs;
    }

    public void setNumRadioPesquisa(String numRadioPesquisa) {
        this.numRadioPesquisa = numRadioPesquisa;
    }

    public String getNumRadioPesquisa() {
        return numRadioPesquisa;
    }

}
